package client.presen.componentes;

import javax.swing.JPanel;

import client.presen.IVentanaJugador;



/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
/**
 * @author Administrador
 */
public class JPTablero extends JPanel {

    /**
     * 
     * @uml.property name="jp11" multiplicity="(0 1)"
     */
    private JPCuadricula jp11 = null;

    /**
     * 
     * @uml.property name="jp12" multiplicity="(0 1)"
     */
    private JPCuadricula jp12 = null;

    /**
     * 
     * @uml.property name="jp13" multiplicity="(0 1)"
     */
    private JPCuadricula jp13 = null;

    /**
     * 
     * @uml.property name="jp21" multiplicity="(0 1)"
     */
    private JPCuadricula jp21 = null;

	private JPCuadricula jp22 = null;

    /**
     * 
     * @uml.property name="jp23" multiplicity="(0 1)"
     */
    private JPCuadricula jp23 = null;

    /**
     * 
     * @uml.property name="jp31" multiplicity="(0 1)"
     */
    private JPCuadricula jp31 = null;

	private JPCuadricula jp32 = null;

    /**
     * 
     * @uml.property name="jp33" multiplicity="(0 1)"
     */
    private JPCuadricula jp33 = null;

	public JPTablero(IVentanaJugador ventana) {
		super();
		initialize();
		this.ventanaJugador=ventana;
		jp11.setVentanaJugador(ventana); jp11.setIdCuadricula((byte) 0);
		jp12.setVentanaJugador(ventana); jp12.setIdCuadricula((byte) 1);
		jp13.setVentanaJugador(ventana); jp13.setIdCuadricula((byte) 2);
		jp21.setVentanaJugador(ventana); jp21.setIdCuadricula((byte) 3);
		jp22.setVentanaJugador(ventana); jp22.setIdCuadricula((byte) 4);
		jp23.setVentanaJugador(ventana); jp23.setIdCuadricula((byte) 5);
		jp31.setVentanaJugador(ventana); jp31.setIdCuadricula((byte) 6);
		jp32.setVentanaJugador(ventana); jp32.setIdCuadricula((byte) 7);
		jp33.setVentanaJugador(ventana); jp33.setIdCuadricula((byte) 8);
		String sudoku="";
		for (int i=0; i<81; i++)
			sudoku+="0";
	}

	/**
	 * This is the default constructor
	 * @param sudoku
	 * @param id
	 */
	public JPTablero(String sudoku, IVentanaJugador ventana) {
		this(ventana);
		initialize();
		load(sudoku);
	}
	
	public void load(String sudoku) {
		JPCuadricula j=null;
		int fila=0, columna=-1;
		for (int i=0; i<sudoku.length(); i++) {
			int idCuadricula=i/9;
			if (idCuadricula>0 && i%9==0) {
				fila=0;
				columna=0;
			} else {
				columna++;
				if (columna==3) {
					fila++;
					columna=0;
				}
			}
			char c=sudoku.charAt(i);
			switch (idCuadricula) {
				case 0 : j=jp11; break;
				case 1 : j=jp12; break;
				case 2 : j=jp13; break;
				case 3 : j=jp21; break;
				case 4 : j=jp22; break;
				case 5 : j=jp23; break;
				case 6 : j=jp31; break;
				case 7 : j=jp32; break;
				case 8 : j=jp33; break;
			}
			j.putValue(c, fila, columna);
		}
	}
	
	/**
	 * @param c
	 * @param fila
	 * @param columna
	 */
	private void coloca(char c, int fila, int columna) {
		JPCuadricula cuadricula=null;
		int filaCuadricula=fila/3;
		int columnaCuadricula=columna/3;
		int filaCasilla=fila%3;
		int columnaCasilla=columna%3;
		if (filaCuadricula==0) {
			if (columnaCuadricula==0) {
				cuadricula=this.jp11;
			} else if (columnaCuadricula==1) {
				cuadricula=this.jp12;
			} else if (columnaCuadricula==2) {
				cuadricula=this.jp13;
			} 
		} else if (filaCuadricula==1) {
			if (columnaCuadricula==0) {
				cuadricula=this.jp21;
			} else if (columnaCuadricula==1) {
				cuadricula=this.jp22;
			} else if (columnaCuadricula==2) {
				cuadricula=this.jp23;
			} 
		} else if (filaCuadricula==2) {
			if (columnaCuadricula==0) {
				cuadricula=this.jp31;
			} else if (columnaCuadricula==1) {
				cuadricula=this.jp32;
			} else if (columnaCuadricula==2) {
				cuadricula=this.jp33;
			} 
		}
		cuadricula.putValue(c, filaCasilla, columnaCasilla);
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private  void initialize() {
		this.setLayout(null);
		this.setSize(338, 294);
		this.add(getJp11(), null);
		this.add(getJp12(), null);
		this.add(getJp13(), null);
		this.add(getJp21(), null);
		this.add(getJp22(), null);
		this.add(getJp32(), null);
		this.add(getJp33(), null);
		this.add(getJp23(), null);
		this.add(getJp31(), null);
	}

    /**
     * This method initializes JPCuadricula	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp11"
     */
    private JPCuadricula getJp11() {
        if (jp11 == null) {
            jp11 = new JPCuadricula();
            jp11.setBounds(5, 5, 96, 87);
        }
        return jp11;
    }

    /**
     * This method initializes jp12	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp12"
     */
    private JPCuadricula getJp12() {
        if (jp12 == null) {
            jp12 = new JPCuadricula();
            jp12.setBounds(101, 5, 95, 87);
        }
        return jp12;
    }

    /**
     * This method initializes jp13	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp13"
     */
    private JPCuadricula getJp13() {
        if (jp13 == null) {
            jp13 = new JPCuadricula();
            jp13.setBounds(196, 6, 101, 86);
        }
        return jp13;
    }

    /**
     * This method initializes jp21	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp21"
     */
    private JPCuadricula getJp21() {
        if (jp21 == null) {
            jp21 = new JPCuadricula();
            jp21.setBounds(5, 92, 96, 86);
        }
        return jp21;
    }

	/**
	 * This method initializes jp22	
	 * 	
	 * @return sudoku.client.presen.componentes.JPCuadricula	
	 */    
	private JPCuadricula getJp22() {
		if (jp22 == null) {
			jp22 = new JPCuadricula();
			jp22.setBounds(101, 92, 96, 86);
		}
		return jp22;
	}

    /**
     * This method initializes jp23	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp23"
     */
    private JPCuadricula getJp23() {
        if (jp23 == null) {
            jp23 = new JPCuadricula();
            jp23.setBounds(196, 92, 100, 85);
        }
        return jp23;
    }

    /**
     * This method initializes jp31	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp31"
     */
    private JPCuadricula getJp31() {
        if (jp31 == null) {
            jp31 = new JPCuadricula();
            jp31.setBounds(6, 178, 95, 91);
        }
        return jp31;
    }

	/**
	 * This method initializes jp322	
	 * 	
	 * @return sudoku.client.presen.componentes.JPCuadricula	
	 */    
	private JPCuadricula getJp32() {
		if (jp32 == null) {
			jp32 = new JPCuadricula();
			jp32.setBounds(101, 178, 96, 91);
		}
		return jp32;
	}

    /**
     * This method initializes jp33	
     * 	
     * @return sudoku.client.presen.componentes.JPCuadricula
     * 
     * @uml.property name="jp33"
     */
    private JPCuadricula getJp33() {
        if (jp33 == null) {
            jp33 = new JPCuadricula();
            jp33.setBounds(197, 178, 100, 88);
        }
        return jp33;
    }

	/**
	 * @return
	 */
	public String getSudoku() {
		String result="";
		result+=jp11.getNumeros() + jp12.getNumeros() + jp13.getNumeros() + 
		jp21.getNumeros() + jp22.getNumeros() + jp23.getNumeros() + 
		jp31.getNumeros() + jp32.getNumeros() + jp33.getNumeros();
		return result;
	}

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * @uml.associationEnd inverse="jPTablero:sudoku.client.presen.IVentanaJugador" multiplicity="(0 1)"
	 * 
	 */
	private IVentanaJugador ventanaJugador;

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * 
	 */
	public IVentanaJugador getVentanaJugador() {
		return ventanaJugador;
	}

	/**
	 *  
	 * @uml.property name="ventanaJugador"
	 * 
	 */
	public void setVentanaJugador(IVentanaJugador ventanaJugador) {
		this.ventanaJugador = ventanaJugador;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
